package dao

import (
	"gin-worked/config"
	"gin-worked/pkg/logger"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
	"time"
)

var (
	Db  *gorm.DB
	err error
)

func init() {
	Db, err = gorm.Open(mysql.Open(config.Mysql), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			TablePrefix:   config.Prefix, //表前缀
			SingularTable: true,          //使用单数表名进行查询  模型必须和数据表命保持一致 不含前缀
		},
	})

	if err != nil {
		logger.Error(map[string]interface{}{"mysql connect error": err.Error()})
	}

	if Db.Error != nil {
		logger.Error(map[string]interface{}{"database error": Db.Error})
	}

	sqlDB, _ := Db.DB()

	sqlDB.SetMaxIdleConns(10)           //设置空闲连接池中连接的最大数量
	sqlDB.SetMaxOpenConns(100)          // SetMaxOpenConns 设置打开数据库连接的最大数量
	sqlDB.SetConnMaxLifetime(time.Hour) // SetConnMaxLifetime 设置了连接可复用的最大时间
	//db = sqlDB.Set("gorm:table_options", "prefix_").Table("products")
}
